Selecting Refactorings in XP: An Option Based Approach

نویسندگان

  • Androklis Mavridis
  • Apostolos Ampatzoglou
  • Ioannis Stamelos
  • Panagiotis Sfetsos
  • Ignatios Deligiannis
چکیده

Refactoring, as an XP practice, aims to improve the design of existing code to cope with foreseen software architecture evolution. The selection of the optimum refactoring strategy can be a daunting task involving the identification of refactoring candidates, the determination of which refactorings to apply and the assessment of the refactoring impact on software product quality characteristics. As such, the benefits from refactorings are measured from the quality advancements achieved through the application of state of the art structural quality assessments on refactored code. Perceiving refactoring trough the lens of value creation, the optimum strategy should be the one that maximizes the endurance of the architecture in future imposed changes. We argue that an alternative measurement and examination of the refactoring success is possible, one, that focuses on the balance between effort spent and anticipated cost minimization. In this arena, traditional, quality evaluation methods fall short in examining the financial implications of uncertainties imposed by the frequent updates/modifications and by the dynamics of the XP programming. In this paper we apply simple Real Options Analysis techniques and we perceive the selection of the optimum refactoring strategy as an option capable of generating value (cost minimization) upon adoption. Doing so, we link the endurance of the refactored architecture to its true monetary value. To get an estimation of the expected cost that is needed to apply the considered refactorings and to the effect of applying them, in the cost of future adoptions we conducted a case study. The results of the case study suggest that every refactoring can be associated with different benefit levels during system extension.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Towards a Proper Integration of Large Refactorings in Agile Software Development

Refactoring is a key element of many agile software development methods. While most developers associate small design changes with the term refactoring (as described by Martin Fowler and William F. Opdyke), everyday development practice in mediumto large-sized projects calls for more than fine-grained refactorings. Such projects involve more complex refactorings, running for several hours or da...

متن کامل

Tool Support for Complex Refactoring to Design Patterns

The abstract should summarize the contents of the paper and should Using design patterns is seen to improve the maintainability of software systems. Applying patterns often implies upfront design while agile methods rely on software architecture to emerge. We bridge this gap by applying complex refactoring towards patterns to improve software design. Complex refactorings are based on existing t...

متن کامل

Resolving Conflict and Dependency in Refactoring to a Desired Design

Refactoring is performed to improve software quality while leaving the behaviour of the system unchanged. In practice there are many opportunities for refactoring, however, due to conflicts and dependencies between refactorings, only certain orders of refactorings are applicable. Selecting and ordering an appropriate set of refactorings is a challenging task for a developer. We propose a novel ...

متن کامل

The Video Store Revisited – Thoughts on Refactoring and Testing

Testing and refactoring are core activities in extreme programming (XP). In principle, they are separate activities where the tests are used to verify that refactorings do not change behavior of the system. In practice however, they can become intertwined when refactorings invalidate tests. This paper explores the precise relationship between the two. First, we identify which of the published r...

متن کامل

Analysis-based Refactorings for Haskell

Refactoring is the process of improving the design of existing programs without changing their external behaviour. Refactoring can make a program easier to understand or modify if applied appropriately. Preserving behaviour guarantees that refactoring does not introduce (or remove) any bugs. Refactoring has taken a prominent place in software development and maintenance, but most of the recent ...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2012